/* 
 * The base class, all its subclasses should implement <code>operator ()</code> to handle the syscalls of the source
 * binary code.
 */
#ifndef SYSCALLHANDLER_H
#define SYSCALLHANDLER_H

//#include "crossbit/SignalRegister.h"

namespace crossbit {

    class ProcessorState;
    class MemoryImage;
	class SignalRegister;

    class SyscallHandler
    {
        public:
            SyscallHandler(ProcessorState *state, MemoryImage *img, SignalRegister *rg)
                :sh_state(state), sh_img(img), sh_rg(rg)
                {}
            // the syscall handling method
            virtual ~SyscallHandler() {}
            virtual void operator () () {};

        protected:
            // a pointer to the source binary code's simulated process state
            ProcessorState	*sh_state;
            // a pointer to the source binary image
            MemoryImage		*sh_img;	
			SignalRegister	*sh_rg;
    };

}
#endif
